<?php
/**
 ***********************************************************************************************************************
 * 地区服务 采用快宝编码体系
 * @author llq  2015/7/14  21:31
 ***********************************************************************************************************************
 */
namespace soa\core\map;
use soa\client;

/**
 * Class area
 * @package soa\core
 */
class area extends client
{
    /**
     * 服务地址
     * @var string
     */
    public $service_url = 'http://core.kuaidihelp.com/';

    /**
     * 服务名称
     * @var string
     */
    protected $service_name = 'kuaidihelp_core';

    /**
     * 根据地区ID编号获取地区详情
     */
    public function getById($areaId)
    {
        if(!empty($areaId) && is_numeric($areaId)) {
            return $this->get('v1/map/area/info', ['areaId' => $areaId]);
        }
        return [];
    }

    /**
     * 根据地区pid获取所有下属地区
     */
    public function getByPid($pid)
    {
        if(is_numeric($pid)) {
            return $this->get('v1/map/area/info', ['pid' => $pid]);
        }
        return [];
    }

    /**
     * 根据地区中文转换得到地区编码 5级行政范围 省、市、区、街道、社区
     * @param $province
     * @param string $city
     * @param string $county
     * @param string $town
     * @param string $street
     * @return int
     */
    public function area2id($province, $city = '', $county = '', $street = '', $community= '')
    {
        if(!empty($province) && is_string($province)) {
            return $this->get(
                'v1/map/area/area2id',
                [
                    'province' => $province,
                    'city' => (string) $city,
                    'county' => (string) $county,
                    'street' => (string) $street,
                    'community' => (string) $community,
                ]
            );
        }
        return 0;
    }

    /**
     * 将地址转换成地区ID 如：上海市长宁区北翟路1178号 如果无法解析将返回0
     * @param $address
     * @return int
     */
    public function address2id($address)
    {
        if(!empty($address) && is_string($address)) {
            return $this->get('v1/map/area/address2id', ['address' => $address]);
        }
        return 0;
    }

    /**
     * 根据层级和（拼音/名称/缩写）搜索地区
     * @param $field
     * @param int $level
     * @return bool
     */
    public function search($field,$level=2){
        if(empty($field)){
            return false;
        }

        return $this->get('v1/map/area/search',[
            'field'=>$field,
            'level'=>$level
        ]);
    }

}